// 文件名：string_view_api_params.cpp
// 目的：展示以 std::string_view 作为 API 参数的零拷贝风格，接受 string、C 字符串、临时字符串等来源。
// 好处：
//   - 减少不必要拷贝与动态分配；
//   - 统一接口：string_view 能从多种字符串来源隐式构造（std::string、const char*、字面量等）。
// 生命周期注意：
//   - string_view 仅是一个“视图”，不拥有数据；函数内部若仅同步使用（不持久化存储），传入临时对象是安全的；
//   - 切勿将入参的 string_view 直接保存到长期存储中（例如成员变量、容器）而不确保底层数据的寿命更长。
// 示例：第三次调用传入 std::string 临时对象，因 logEvent 仅同步打印，安全无悬垂引用风险。

#include <iostream>
#include <string>
#include <string_view>

void logEvent(std::string_view category, std::string_view detail) {
    std::cout << "[" << category << "] " << detail << '\n';
}

int main() {
    std::string dynamic = "disk";
    const char* literal = "network";

    logEvent(dynamic, "rotation complete");
    logEvent(literal, "ping timeout");
    logEvent("auth", std::string("user login succeeded"));

    return 0;
}